package com.coupon.admin.entity;

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 用户券包实体类
 */
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("user_coupon")
public class UserCoupon {
    
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;
    
    /**
     * 用户ID
     */
    private Long userId;
    
    /**
     * 券ID
     */
    private Long couponId;
    
    /**
     * 券码
     */
    private String couponCode;
    
    /**
     * 状态：UNUSED(未使用), USING(使用中), USED(已使用), EXPIRED(已过期)
     */
    private String status;
    
    /**
     * 领取时间
     */
    private LocalDateTime receiveTime;
    
    /**
     * 使用时间
     */
    private LocalDateTime useTime;
    
    /**
     * 过期时间
     */
    private LocalDateTime expireTime;
    
    /**
     * 订单ID（使用时的订单）
     */
    private Long orderId;
    
    /**
     * 核销商户ID
     */
    private Long merchantId;
    
    /**
     * 核销时间
     */
    private LocalDateTime verifyTime;
    
    /**
     * 核销方式：ONLINE(线上), OFFLINE(线下), AUTO(自动)
     */
    private String verifyType;
    
    /**
     * 实际抵扣金额
     */
    private BigDecimal actualDiscount;
    
    /**
     * 是否来自拼券团
     */
    private Boolean fromGroup;
    
    /**
     * 拼券团ID
     */
    private Long groupId;
    
    /**
     * 是否来自盲盒任务
     */
    private Boolean fromBlindBox;
    
    /**
     * 盲盒任务ID
     */
    private Long blindBoxTaskId;
    
    /**
     * 创建时间
     */
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    
    /**
     * 更新时间
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
    
    /**
     * 逻辑删除标记
     */
    @TableLogic
    private Integer deleted;
}
